In an enterprise computing environment, host servers running one or more processes communicate with other devices in a network via input/output devices that are configured to provide redundancy services. For example, the host server devices connect to input/output modules in accordance with a computer expansion card standard, such as the Peripheral Component Interconnect Express (PCIe) standard.
Achieving input/output device redundancy using commodity servers and operating systems is a complex problem that has not been satisfactorily solved. For example, PCIe device failure or “hot” removal will cause most servers to hang or crash. Some servers require specialized driver software to manage failover events, and even these configurations will hang or crash host servers if there are incomplete transactions or lost input/output write credits.